package com.wicket.okrframework.integration.dto;

import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc OrgPositionGradeDto
 * @使用场景
 */
@Data
public class OrgPositionGradeDto extends BaseDto implements Serializable {

  /**
   * 职务级别ID:
   */
  @NotNull(message = "职务级别ID不能为空")
  @ApiModelProperty("职务级别ID")
  private String positionGradeId;

  /**
   * 职务级别名称:
   */
  @NotNull(message = "职务级别名称不能为空")
  @ApiModelProperty("职务级别名称")
  private String positionGradeName;

  /**
   * 岗位类型ID:
   */
  @ApiModelProperty("岗位类型ID")
  private String stationTypeId;

  /**
   * 岗位类型名称:
   */
  @ApiModelProperty("岗位类型名称")
  private String stationTypeName;

  /**
   * 职务级别编号:
   */
  @ApiModelProperty("职务级别编号")
  private String positionGradeNumber;

  /**
   * 是否设置等级范围:
   */
  @ApiModelProperty("是否设置等级范围")
  private String isSetGrade;

  /**
   * 排序:
   */
  @ApiModelProperty("排序")
  private Long orderNumber;

  /**
   * 批次ID:
   */
  @ApiModelProperty("批次ID")
  private String batchId;

  /**
   * 批次开始时间:
   */
  @ApiModelProperty("批次开始时间 ")
  private Date batchStartTime;

  /**
   * 批次结束时间:
   */
  @ApiModelProperty("批次结束时间")
  private Date batchEndTime;

  /**
   * 主体生命周期:
   */
  @ApiModelProperty("主体生命周期")
  private String subjectLifeCycle;

  /**
   * 是否存档:
   */
  @ApiModelProperty("是否存档")
  private String isArchive;

  /**
   * 存档类型:
   */
  @ApiModelProperty("存档类型")
  private String archivngType;

  /**
   * 是否未来:
   */
  @ApiModelProperty("是否未来")
  private String isEditing;

  /**
   * 批次下是否更新:
   */
  @ApiModelProperty("批次下是否更新")
  private String isUpdate;

  /**
   * 批次下更新状态:
   */
  @ApiModelProperty("批次下更新状态")
  private String updateStatus;

  /**
   * 操作人就职记录ID:
   */
  @ApiModelProperty("操作人就职记录ID")
  private String operationInductionId;

  /**
   * 操作时间:
   */
  @ApiModelProperty("操作时间")
  private Date operateTime;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    OrgPositionGradeDto that = (OrgPositionGradeDto) o;
    return (
      positionGradeId == that.positionGradeId &&
      positionGradeName == that.positionGradeName &&
      stationTypeId == that.stationTypeId &&
      stationTypeName == that.stationTypeName &&
      positionGradeNumber == that.positionGradeNumber &&
      isSetGrade == that.isSetGrade &&
      orderNumber == that.orderNumber &&
      batchId == that.batchId &&
      batchStartTime == that.batchStartTime &&
      batchEndTime == that.batchEndTime &&
      subjectLifeCycle == that.subjectLifeCycle &&
      isArchive == that.isArchive &&
      archivngType == that.archivngType &&
      isEditing == that.isEditing &&
      isUpdate == that.isUpdate &&
      updateStatus == that.updateStatus &&
      operationInductionId == that.operationInductionId &&
      operateTime == that.operateTime
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      positionGradeId,
      positionGradeName,
      stationTypeId,
      stationTypeName,
      positionGradeNumber,
      isSetGrade,
      orderNumber,
      batchId,
      batchStartTime,
      batchEndTime,
      subjectLifeCycle,
      isArchive,
      archivngType,
      isEditing,
      isUpdate,
      updateStatus,
      operationInductionId,
      operateTime
    );
  }

}
